#!/bin/bash

# 石楼油库设备管理系统 - 稳定启动脚本

echo "🚀 启动石楼油库设备管理系统..."

# 检查和清理之前的进程
echo "🧹 清理之前的进程..."
pkill -f "next dev" 2>/dev/null || true
sleep 2

# 设置环境变量优化
export NODE_OPTIONS="--max_old_space_size=1024 --max-semi-space-size=64"
export NODE_ENV=development
export NEXT_TELEMETRY_DISABLED=1

# 检查端口占用
check_port() {
    if lsof -Pi :$1 -sTCP:LISTEN -t >/dev/null; then
        echo "⚠️  端口 $1 被占用，尝试清理..."
        lsof -ti:$1 | xargs kill -9 2>/dev/null || true
        sleep 1
    fi
}

check_port 3000
check_port 3001

# 检查数据库状态
echo "🗄️ 检查数据库状态..."
if [ ! -f "data/delivery-management.db" ]; then
    echo "❌ 数据库文件不存在: data/delivery-management.db"
    exit 1
fi

echo "📊 数据库大小: $(du -h data/delivery-management.db | cut -f1)"

# 清理Next.js缓存
echo "🧹 清理Next.js缓存..."
rm -rf .next/cache 2>/dev/null || true

# 启动开发服务器
echo "🌟 启动开发服务器..."
echo "📍 访问地址: http://localhost:3000"
echo "⏱️ 启动时间可能需要1-2分钟，请耐心等待..."
echo ""

# 使用nohup在后台运行，避免终端关闭时进程终止
nohup npm run dev > server.log 2>&1 &
SERVER_PID=$!

echo "🆔 服务器进程ID: $SERVER_PID"
echo "📋 日志文件: server.log"
echo ""

# 等待服务器启动
echo "⏳ 等待服务器启动..."
for i in {1..60}; do
    if curl -s http://localhost:3000 >/dev/null 2>&1; then
        echo "✅ 服务器启动成功！"
        echo "🌐 请访问: http://localhost:3000"
        break
    fi
    
    if [ $i -eq 60 ]; then
        echo "❌ 服务器启动超时，请检查日志:"
        tail -20 server.log
        exit 1
    fi
    
    sleep 2
    echo -n "."
done

echo ""
echo "🎉 石楼油库设备管理系统已成功启动！"
echo ""
echo "📖 常用命令:"
echo "   查看日志: tail -f server.log"
echo "   停止服务: pkill -f 'next dev'"
echo "   重启服务: ./start-dev.sh"
echo ""